Interactive Radar Chart of Environmental Impacts by Diet Group¶

Diet groups: Vegan, Vegetarian, Fish, Low meat consumption (Meat_low), Medium meat consumption (Meat_medium), High meat consumption (Meat_high)

Environmental indicators: Mean GHG emissions, Mean land use, Mean water scarcity, Mean eutrophication, Mean biodiversity impact, Mean water use, Mean acidification, Impact score

Features: interactive group comparison, polygon area visualization, group legend

InĀ [37]:
import pandas as pd
import plotly.graph_objects as go

# Load data
df = pd.read_csv("Results_21Mar2022.csv")

# Extract standardize diet group names
df['diet_group'] = df['grouping'].str.extract(r'^([a-zA-Z\s<>+\-0-9]+)_')[0].str.strip().str.lower()
df['diet_group'] = df['diet_group'].replace({
    'veggie': 'Vegetarian',
    'meat50-99': 'Meat_medium',
    'meat <50': 'Meat_low',
    'meat 100+': 'Meat_high'
})

# Select environmental indicators and calculate an overall impact score
metrics = ['mean_ghgs', 'mean_land', 'mean_watscar', 'mean_eut',
           'mean_bio', 'mean_watuse', 'mean_acid']
df['impact_score'] = df[metrics].mean(axis=1)
metrics.append('impact_score')

# Define display labels for better readability
label_map = {
    'mean_ghgs': 'Mean_GHGS',
    'mean_land': 'Mean_LAND',
    'mean_watscar': 'Mean_WATSCAR',
    'mean_eut': 'Mean_EUT',
    'mean_bio': 'Mean_BIO',
    'mean_watuse': 'Mean_WATUSE',
    'mean_acid': 'Mean_ACID',
    'impact_score': 'Impact_SCORE'
}

# Calculate average environmental metrics by diet group
group_means = df.groupby('diet_group')[metrics].mean().reset_index()

# Create interactive radar chart
fig = go.Figure()

for _, row in group_means.iterrows():
    fig.add_trace(go.Scatterpolar(
        r=row[metrics].values,
        theta=[label_map[m] for m in metrics],
        fill='toself',
        name=row['diet_group'].capitalize()
    ))

# Update chart layout
fig.update_layout(
    polar=dict(radialaxis=dict(visible=True)),
    title="Interactive Radar Chart of Environmental Impacts by Diet Group",
    showlegend=True,
    legend_title_text='Diet Group'
)
fig.show()
InĀ [31]:
fig.write_image("Radar_Chart.svg")